<?php

namespace App\Common\Cla;

use App\Common as com;

class Weixin extends com\Cla\ClaBase {

	// ===============================
	//
	//
	// 下面为静态方法
	//
	//
	// ===============================

	/**
	 * 签名生成算法
	 * @param  array  $params API调用的请求参数集合的关联数组，不包含sign参数
	 * @param  string $secret 签名的密钥为配置的app_secret
	 * @return string 返回参数签名值
	 */
	public static function getSignature( $params, $secret ){
		//待签名字符串
		$str = '';
		// 先将参数以其参数名的字典序升序进行排序
		ksort( $params );
		// 遍历排序后的参数数组中的每一个key/value对
		foreach ( $params as $k => $v ) {
			//为key/value对生成一个&key=value格式的字符串，并拼接到待签名字符串后面
			$str .= "&{$k}={$v}";
		}
		// 将签名密钥拼接到签名字符串最后面
		$str = ltrim( $str, '&' ) . "&key={$secret}";
		// 通过md5算法为签名字符串生成一个md5签名，该签名就是我们要追加的sign参数值
		return md5( $str );
	}

}
